package lsl.Git.远程仓库;

public class C01认识远程仓库 {
}
/*
       本地仓库是保存在开发者本地计算机上的存储代码的仓库，而远程仓库是保存在云服务器或其他远程计算机上的存储代码的仓库。它们的主要区别如下：
            1.存储位置：本地仓库保存在开发者的本地计算机上，而远程仓库保存在云服务器或其他远程计算机上。
            2.访问权限：本地仓库只有开发者自己可以访问和修改，而远程仓库可以被多个开发者访问和修改。
            3.团队协作：远程仓库可以用于团队协作，多个开发者可以共享同一个远程仓库，进行代码的协同开发。本地仓库则更适用于个人开发或者在没有网络连接时的单机开发。
            4.分支管理：远程仓库可以保存多个分支，以便进行不同的开发任务，而本地仓库通常只保存当前使用的分支。
            5.备份和恢复：远程仓库可以作为代码的备份，即使本地仓库丢失或损坏，代码依然可以从远程仓库恢复。同时，远程仓库还可以用于跨计算机或团队成员之间的代码同步。
        //需要注意的是，本地仓库和远程仓库之间可以通过Git命令进行同步和更新，开发者可以将本地仓库的修改推送到远程仓库，或者将远程仓库的修改拉取到本地仓库。这样可以实现本地仓库和远程仓库的代码同步





        我们之前学习的都是本地仓库:
            /但是我们在开始的时候,我们知道在实际中是有一个远程仓库的概念,因为你的本地仓库别人看不到的,你玩出花来别人也看不到的
            /接下来我们就引入远程仓库的概念
                /这样才是Git完整流程





       Git的远程仓库(常见的托管服务):
           /和本地仓库一样,也是一个版本库
                /常见的远程仓库
                1.GitHub
                2.码云
                3.GitLab等
                    //我们学习码云

              GitHub(https://github.com):
                  /是一个面向开源及私有软件项目托管平台,因为只支持Git作为唯一的版本库格式进行托管
                        /所以起名为github

              码云(https://gitee.com/):
                 /是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云的速度会更加的快


              GitLab(https://about.gitlab.com/):
                /是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并且在此基础上搭建起来的web服务,一般用于在企业,学校等内部网络搭建git私服


                //但是企业中一般使用Gitlab,因为你使用上面的两个都是放在别人那里,可能不安全,我们自己搭建一个Git中央仓库,作为Git私服这样更加的安全
                //GitHub一般是开源的项目,码云也一样的
                GitHub(gitee)、GitLab 不同点：
                1、GitHub如果使用私有仓库是需要付费的，(2019年开始私有仓库也是免费的但是只能3个人协同开发,想要更多需要收费)，GitLab可以在上面搭建私人的免费仓库。
                2、GitLab让开发团队对他们的代码仓库拥有更多的控制，相对于GitHub，它有不少的特色：
                    (1)允许免费设置仓库权限
                    (2)允许用户选择分享一个project的部分代码
                    (3)允许用户设置project的获取权限，进一步提升安全性
                    (4)可以设置获取到团队整体的改进进度
                    (5)通过innersourcing让不在权限范围内的人访问不到该资源






       注册码云:
           /要想使用码云的相关服务,需要注册账号,gitHub也要
           地址:https://gitee.com/signup
                //我们就使用微信登录了奥
                进去之后
                    1.点击+新建一个仓库
                    2.给远程仓库起个名字,设置一个路径
                    3.设置是否开源,我们设置的是开源,没人看的,直接点击创建
                        //剩下的我们什么都不要点
                        //下面的是问我们要不要帮我们初始化仓库,我们不用奥,我们把本地的仓库推上来
                        我们的码云的
                            账号: 18237100999
                            密码: lcb67182788
                               名字:  MACTCP






      注册完之后我们如何把我们的代码推送上来:
                /那不是谁都能把代码推送到你的仓库中把
                /那你太nb了
                    /我们一般都是设置一个秘钥
                    /在推你本地仓库的时候,我们要写对应的秘钥,秘钥对了才能推进去
                        /配置方式如下:

               配置SSH公钥:
                    1.生成SSH公钥:
                        命令:
                            /ssh-keygen -t rsa(rsa是一个算法)
                                /中间可能要你输入一些东西,不管直接一路回车即可
                                    /如果公钥存在,会自动覆盖的

                    2.Gitee设置账户共公钥:
                        命令(查看公钥):
                            /cat ~/.ssh/id_rsa.pub(他把公钥给你放到一个文件夹中了,这还是个隐藏文件,使用命令查看好一点的)
                                /进入Gitee
                                    /就是把你本地生成的公钥放到这里即可
                                    /点击安全设置中的SSH公钥
                                    /添加公钥
                                    /给公钥起个名字,复制你的公钥
                                    /点击确定即可

                    3.验证是否配置成功:
                        /使用命令(本地仓库):
                            /ssh -T git@gitee.com
                                /第一次验证的时候,输入yes即可
                                    /这时他就会显示你登录成功了


               设置秘钥的时候,你要点进去你的仓库才能设置仓库奥,否则外面的设置是你自己用户信息的设置
                如何删除远程仓里:
                    1.点击你要删除的仓库,点击管理
                    2.点击左边的删除即可







     操作远程仓库:
        /既然我们已经有远程仓库了,那如何把我们的本地仓库推送到远程仓库
            /当你注册完远程仓库之后,我们要拿到仓库的地址:
                /我们使用SSH的地址:
                    /git@gitee.com:mactcp/git_lsl.git
                步骤:
                    1.远程仓库绑定:
                        /我们要告诉本地仓库,远程仓库是哪一个
                        本地使用命令:
                            /git remote add origin  + 地址
                                /origin是本地仓库给远程仓库起的名字
                                    /因为你的本地仓库可能关联多个远程仓库
                                        /但是一般情况下,一个本地仓库,关联一个远程仓库
                                            /而且我们起名一般都是叫这个
                           /绑定完成之后可以使用命令看是否添加成功
                                命令:
                                    /git remote
                                        /查看远程仓库有哪些



                   2.本地仓库推送给远程仓库(代码同步过去):
                        命令:
                            /git push 仓库命 master
                                /git push origin master
                                    /现在就是你吧master这个分支推送给远程仓库了
                                    /点击远程仓库的代码,即可看到我们推送的内容
                                        /在第一次推送的时候,会弹出new branch的提示
                                            /就是远程仓库新建了一个分支来存你推送的分支
                                            /只有第一次会有这个东西的
                       推送命令完整写法:
                            /git push [-f] [--set-upstream] [远端名称 [本地分支名]:[远端分支名]]
                                /所以我们上面的命令的完整写法是
                                git push origin master:master
                                    /表示把本地的master分支推送给远程仓库的master分支
                                        /但是如果远程的分支名和你本地的分支名是一样的就可以不写的
                                        /就像我们上面的写法一样的,只写本地分支即可
                               参数含义:
                                    --set-upstream:
                                        /推送到远端的同时并且建立起和远端分支的关联关系
                                        如:
                                            /git push --set-upstream origin master:master
                                                /如果当前分支已经和远端分支关联,则可以省略本地分支名和远端分支名
                                                如:
                                                    /git push      即可
                                                        /将本地master分支推送给已经关联的远端分支
                                                            /这个绑定一次即可

                                           实战:
                                                /如果你直接git push 人家会报错的,人家不知道推送给谁
                                                /使用指令git branch -vv 来查看本地分支和远端分支的对应关系
                                                /建立这个分支的联系git push --set-upstream origin master:master
                                                /再次-vv查看:
                                                    $ git branch -vv
                                                    * master 5dea062 [origin/master] Merge branch 'dev01'
                                                    /我们发现这个分支已经绑定关系了
                                                        /那么在使用这个分支的时候,就可以直接git push了



                                  -f:
                                    /如果你本地的代码和云端修改的是同一个代码
                                        /这时人家不让你推送
                                            /-f就是表示我不管你云端改啥了,现在就以我的为准,强制覆盖
                                                /但是一般情况下,-f的功能给你禁用了公司
                                                    /你是一个小白,你直接给公司的代码覆盖完了NB
                                                    /人家写的count=6 你非jb改成7 这时全部崩了
                                                        /所以一般都是只需添加,不尊覆盖的
                                                        /当然在你自己的本地仓库,你自己的冲突你随便改
                                           /是的，-f 参数的使用场景与解决冲突有关。
                                                /我们在后面学习远程仓库的冲突解决
 */
